/**
 *
 * @properties={typeid:24,uuid:"E2F08139-23CB-49A5-BCB2-D57C3F9B7442"}
 */
function buscar()
{
	if ((globals.gFechaDesde != null) && (globals.gFechaHasta != null))
	{
		var d1 = globals.gFechaDesde
		d1.setHours(00);
		d1.setMinutes(00);
		d1.setSeconds(00);
		d1.setMilliseconds(0000)
		
		var d2 = globals.gFechaHasta
		d2.setHours(23);
		d2.setMinutes(59);
		d2.setSeconds(59);
		
		var query = 'SELECT cc.fecha_mov, cc.cod_mov, cc.comprob_completo, cc.cliente_id, c.cuit,c.tipo_iva_id, '+ 
						'cc.neto_signo, cc.iva_signo, cc.iva_porc, cc.ib_percep_signo, cc.ib_percep_porc, '+
						'cc.neto_no_gravado_signo, cc.importe_signo '+
						'FROM ctacte_cl as "cc" '+
						'INNER JOIN clientes as "c" ON cc.cliente_id = c.cliente_id '+
						'INNER JOIN tab_mov_cl as "tb" ON cc.cod_mov = tb.ctacte_mov_cl_id '+
						'WHERE tb.diario_ventas = 1 and cc.userv_id = ? and cc.fecha_mov BETWEEN ? and ?'
		var args = [globals.gUservID,d1,d2]
		var $ds = databaseManager.getDataSetByQuery('infocom',query,args,-1)
		
		if ($ds.getMaxRowIndex() == 0)
		{
			globals.DIALOGS.showWarningDialog('Aviso','No se encontraron movimientos con esas condiciones','OK')
		}
		else
		{	
			elements.tab_diario.removeAllTabs()
			var $nombre = 'diario_vtas_ds_2'
			var $frm = solutionModel.getForm($nombre)
			var $tipos = [JSColumn.DATETIME, JSColumn.INTEGER, JSColumn.TEXT, JSColumn.INTEGER, JSColumn.TEXT, JSColumn.INTEGER,
			              JSColumn.NUMBER, JSColumn.NUMBER, JSColumn.NUMBER, JSColumn.NUMBER, JSColumn.NUMBER, JSColumn.NUMBER, JSColumn.NUMBER]
			$frm.dataSource = $ds.createDataSource('DIARIO_V',$tipos)
			$frm.styleName = gusuario_to_rel_solucion_usuario.estilo
			forms[$nombre].controller.recreateUI()
			forms[$nombre].foundset.sort('fecha_mov asc, cod_mov asc, letra asc, sucursal asc ,nro_factura asc')
			elements.tab_diario.addTab(forms[$nombre]);
			forms[$nombre].queryTotales()
		}
	}
	else
	{
		globals.DIALOGS.showWarningDialog('Aviso','Por favor complete todos los datos','OK')
	}
	
/*	var $totales = queryTotales()
	var $params = {
		userv: uservs_to_uservs.razon_social,
		pTitulo: 'Diario de Cobranzas del ' + utils.dateFormat(globals.gFechaDesde,'dd/MM/yyyy') + ' al ' + utils.dateFormat(globals.gFechaHasta,'dd/MM/yyyy'),
		pFechaDesde: globals.gFechaDesde,
		pFechaHasta: globals.gFechaHasta,
		pUservId: globals.gUservID,
		
		pIva1: $totales[0][0],
		pIva2: $totales[0][1],
		pIva3: $totales[0][2],
		pIva4: $totales[0][3],
		
		pNeto1: $totales[1][0],
		pNeto2: $totales[1][1],
		pNeto3: $totales[1][2],
		pNeto4: $totales[1][3],
		
		pPorc1: $totales[2][0],
		pPorc2: $totales[2][1],
		pPorc3: $totales[2][2],
		pPorc4: $totales[2][3]
	}
	globals.metodoJasper('impresion','ventas/diario_ventas.jasper','Diario_ventas','infocom',$params)*/
}

/**
 * @properties={typeid:24,uuid:"05041907-37DC-46EA-81C7-6CD3FC31DAD7"}
 */
function queryTotales()
{
	var $fechaDesde = globals.gFechaDesde
	$fechaDesde.setHours(00)
	$fechaDesde.setMinutes(00)
	$fechaDesde.setSeconds(00)
	$fechaDesde.setMilliseconds(000)
	var $fDesde = utils.dateFormat($fechaDesde,'yyyy-MM-dd HH:mm:ss')
	var $fechaHasta = globals.gFechaHasta
	$fechaHasta.setHours(23)
	$fechaHasta.setMinutes(59)
	$fechaHasta.setSeconds(59)
	$fechaHasta.setMilliseconds(996)
	var $fHasta = utils.dateFormat($fechaHasta,'yyyy-MM-dd HH:mm:ss')
	
	var queryTasaIva = 'SELECT ti.tasa_iva_id, ti.tasa_iva_porc, ' + globals.gCharNull + '((select SUM(neto_signo) from ctacte_cl as "sc" INNER JOIN tab_mov_cl tb ON sc.cod_mov = ctacte_mov_cl_id where ti.tasa_iva_porc = sc.iva_porc and sc.fecha_mov BETWEEN \'' + $fDesde + '\' and \'' + $fHasta +'\' and  tb.diario_ventas = 1),0) as "t_neto", '+ 
	globals.gCharNull + '((select SUM(iva_signo) from ctacte_cl as "sc" INNER JOIN tab_mov_cl tb ON sc.cod_mov = ctacte_mov_cl_id where ti.tasa_iva_id = sc.tasa_iva_id and sc.fecha_mov BETWEEN \'' + $fDesde + '\' and \'' + $fHasta +'\' and  tb.diario_ventas = 1),0) as "t_iva" '+  
	'FROM tasa_iva as "ti" ' +
	'GROUP BY ti.tasa_iva_porc, ti.tasa_iva_id ORDER BY ti.tasa_iva_porc'					
		
	var argsTasas	= []
	var $tasasIva 	= databaseManager.getDataSetByQuery('infocom',queryTasaIva,argsTasas,-1)
	
	//Indices de las tasas
	var iIvaPorc	= $tasasIva.getColumnNames().indexOf("tasa_iva_porc",0) + 1
	var iTNeto		= $tasasIva.getColumnNames().indexOf("t_neto",0) + 1
	var iTIva		= $tasasIva.getColumnNames().indexOf("t_iva",0) + 1
	
	var $res = new Array(new Array(), new Array(), new Array())
	$res[0] = $tasasIva.getColumnAsArray(iTIva)
	$res[1] = $tasasIva.getColumnAsArray(iTNeto)
	$res[2] = $tasasIva.getColumnAsArray(iIvaPorc)
	return $res
}

/**
 * @properties={typeid:24,uuid:"06558A84-1915-4593-A632-91410ED9B1BC"}
 */
function iniciar() 
{
	globals.gFechaHasta = application.getServerTimeStamp()
	globals.gFechaDesde = application.getServerTimeStamp()
	globals.gFechaDesde = globals.gFechaDesde.setDate (globals.gFechaHasta.getDate() - 30);
}

/**
 * @properties={typeid:24,uuid:"F02D833C-C3EF-4F9C-92DA-4C9ECAA028D1"}
 */
function imprimir_pdf()
{
	var $impresion 	= 'diario_vtas_ds_imp'
	var $frm_imp	= solutionModel.getForm($impresion)
	var $consulta	= 'diario_vtas_ds_2'
	var $frm_cons	= solutionModel.getForm($consulta)
	
	$frm_imp.dataSource = $frm_cons.dataSource
	forms[$impresion].controller.recreateUI()
	forms[$impresion].foundset.sort('fecha_mov asc, cod_mov asc, letra asc, sucural asc ,nro_factura asc')
	pasaTotales()
	globals.metodoPdf($impresion,'Diario_ventas',true)
}

/**
 * @properties={typeid:24,uuid:"AE933116-1258-4C9F-86D3-BF49DCB3C7CF"}
 */
function imprimir_preview()
{
	var $impresion 	= 'diario_vtas_ds_imp'
	var $frm_imp	= solutionModel.getForm($impresion)
	var $consulta	= 'diario_vtas_ds_2'
	var $frm_cons	= solutionModel.getForm($consulta)
	
	$frm_imp.dataSource = $frm_cons.dataSource
	forms[$impresion].controller.recreateUI()
	forms[$impresion].foundset.sort('fecha_mov asc, cod_mov asc, letra asc, sucural asc ,nro_factura asc')
	pasaTotales()
	forms[$impresion].controller.showPrintPreview()
}

/**
 * @properties={typeid:24,uuid:"A284964A-CA69-4E79-A6DA-B522EA69E154"}
 */
function pasaTotales()
{
	var $orginial 	= 'diario_vtas_ds_2'
	var $impresion	= 'diario_vtas_ds_imp'
		
	var $vars		= solutionModel.getForm($impresion).getVariables()
	for (var i = 0 ; i < $vars.length ; i++)
	{
		forms[$impresion][$vars[i].name] = forms[$orginial][$vars[i].name]
	}
}

/**
 * @properties={typeid:24,uuid:"EA73124E-C74D-406A-A64D-CA07F66BC475"}
 */
function xls() {
	archivoExcel('.xls','<TABLE CELLPADDING="1" CELLSPACING="0" BORDER="0">','<tr><td>','','</td><td>','</td></tr>','</table>')
}

/**
 * @properties={typeid:24,uuid:"4473C1B9-C6ED-4314-BADA-CB4032D71760"}
 */
function csv()
{
	archivoExcel('.csv','','','"',';','','')
}

/**
 * TODO generated, please specify type and doc for the params
 * @param extension
 * @param comienzo_archivo
 * @param comienzo_linea
 * @param marca_txt
 * @param separador
 * @param fin_linea
 * @param fin_archivo
 *
 * @properties={typeid:24,uuid:"106750FB-8721-4ED3-B9AF-B657BFBF9B7B"}
 */
function archivoExcel(extension,comienzo_archivo,comienzo_linea,marca_txt,separador,fin_linea,fin_archivo)
{
	/** @type {Date}*/
	var fecha 	= application.getServerTimeStamp()
	fecha 		= utils.dateFormat(fecha,'dd-MM-yyyy hh-mm-ss')
	var $nombre = 'Diario_Ventas_' + fecha + extension
	var jsFile
	if (application.getApplicationType() == APPLICATION_TYPES.WEB_CLIENT)
	{
		jsFile = plugins.file.createFile($nombre)
	}
	else
	{
		jsFile = plugins.file.showFileSaveDialog($nombre)
	}
	if (jsFile)
	{
		var fw = new Packages.java.io.FileWriter(jsFile.getAbsolutePath());
		var bw = new Packages.java.io.BufferedWriter(fw);
		if (comienzo_archivo != '')
		{
			bw.write(comienzo_archivo,0,comienzo_archivo.length)
			bw.newLine()
		}
		//TITULO + NOMBRE Y CUIT DE LA EMPRESA
		var linea = comienzo_linea + 'Diario de Ventas' + fin_linea
		bw.write(linea,0,linea.length)
		bw.newLine()
		linea = comienzo_linea + usuarios_to_uservs.descripcion + fin_linea
		bw.write(linea,0,linea.length)
		bw.newLine()
		linea = comienzo_linea + usuarios_to_uservs.cuit + fin_linea
		bw.write(linea,0,linea.length)
		bw.newLine()
		
		//ESCRIBO EL NOMBRE DE LAS COLUMNAS
		linea = comienzo_linea
		linea += 'fecha' + separador
		linea += 'Comprobante' + separador
		linea += 'Nro.Compr.' + separador
		linea += 'Empresa' + separador
		linea += 'CUIT' + separador
		linea += 'Tipo Iva' + separador
		linea += 'Neto' + separador
		linea += 'No Gravado' + separador
		linea += 'Iva' + separador
		linea += 'IVA %' + separador
		linea += 'Importe' + separador
		linea += fin_linea
		bw.write(linea,0,linea.length)
		
		linea 	= comienzo_linea
		var fs 	= forms.diario_vtas_ds_2.foundset					
		var i = 1
		var $cant = databaseManager.getFoundSetCount(fs)
		while ((i <= globals.gLimiteCsv) && (i <= $cant))
		{
			/** @type {JSRecord<db:/infocom/ctacte_cl>}*/
			var $rcd = fs.getRecord(i)
			
			bw.newLine()
			linea = comienzo_linea
			linea += utils.dateFormat($rcd.fecha_mov,'dd-MM-yyyy') + separador
			linea += application.getValueListDisplayValue('tab_mov_cl',$rcd.cod_mov) + separador
			linea += $rcd.comprob_completo + separador
			linea += $rcd.ctacte_cl_to_clientes.razon_social + separador
			linea += $rcd.ctacte_cl_to_clientes.cuit + separador
			linea += $rcd.ctacte_cl_to_clientes.clientes_to_relacion_iva_letra.relacion_iva_letra_to_tipo_iva.tipo_iva_desc + separador
			linea += $rcd.neto_signo + separador
			linea += $rcd.neto_no_gravado_signo + separador
			linea += $rcd.iva_signo + separador
			linea += $rcd.iva_porc + separador
			linea += $rcd.importe_signo + separador
			linea += fin_linea
			bw.write(linea,0,linea.length)
			i++
		}
		
		var frm = forms.diario_vtas_ds_2
		//TOTALES
		bw.newLine()
		linea = comienzo_linea
		linea += '' + separador
		linea += '' + separador
		linea += '' + separador
		linea += '' + separador
		linea += '' + separador
		linea += 'Totales' 				+ separador
		linea += frm.t_neto 			+ separador
		linea += frm.t_neto_no_gravado 	+ separador
		linea += frm.t_iva 				+ separador
		linea += '' + separador
		linea += frm.t_importe 			+ separador
		linea += fin_linea
		bw.write(linea,0,linea.length)
		
		//NETO 1
		bw.newLine()
		linea = comienzo_linea
		linea += '' + separador
		linea += '' + separador
		linea += '' + separador
		linea += '' + separador
		linea += 'Neto 1' 			+ separador
		linea += frm.porc_1 		+ separador
		linea += frm.t_neto_1		+ separador
		linea += '' + separador
		linea += frm.t_iva_1 		+ separador
		linea += '' + separador
		linea += '' + separador
		linea += fin_linea
		bw.write(linea,0,linea.length)
		
		//NETO 2
		bw.newLine()
		linea = comienzo_linea
		linea += '' + separador
		linea += '' + separador
		linea += '' + separador
		linea += '' + separador
		linea += 'Neto 2' 			+ separador
		linea += frm.porc_2 		+ separador
		linea += frm.t_neto_2		+ separador
		linea += '' + separador
		linea += frm.t_iva_2 		+ separador
		linea += '' + separador
		linea += '' + separador
		linea += fin_linea
		bw.write(linea,0,linea.length)
		
		//NETO 3
		bw.newLine()
		linea = comienzo_linea
		linea += '' + separador
		linea += '' + separador
		linea += '' + separador
		linea += '' + separador
		linea += 'Neto 3' 			+ separador
		linea += frm.porc_3 		+ separador
		linea += frm.t_neto_3		+ separador
		linea += '' + separador
		linea += frm.t_iva_3 		+ separador
		linea += '' + separador
		linea += '' + separador
		linea += fin_linea
		bw.write(linea,0,linea.length)
		
		//NETO 4
		bw.newLine()
		linea = comienzo_linea
		linea += '' + separador
		linea += '' + separador
		linea += '' + separador
		linea += '' + separador
		linea += 'Neto 4' 			+ separador
		linea += frm.porc_4 		+ separador
		linea += frm.t_neto_4		+ separador
		linea += '' + separador
		linea += frm.t_iva_4 		+ separador
		linea += '' + separador
		linea += '' + separador
		linea += fin_linea
		bw.write(linea,0,linea.length)
		
		if (fin_archivo != '')
		{
			bw.write(fin_archivo,0,fin_archivo.length)
		}
		bw.close()
		fw.close()
		if (application.getApplicationType() == APPLICATION_TYPES.WEB_CLIENT)
		{
			var mimeType = 'application/vnd.ms-excel'
			if (!plugins.file.writeFile(jsFile.getName(), jsFile.getBytes(), mimeType))
			{
				globals.DIALOGS.showErrorDialog('Error','Ocurrió un error y no se pudo grabar el archivo','OK');
			}
			plugins.file.deleteFile(jsFile.getAbsolutePath())
		}
		else
		{
			application.executeProgram("rundll32.exe", ["url.dll,FileProtocolHandler", jsFile.getAbsolutePath()])
		}
	}
}